package com.zhu.instructions.store;

import com.zhu.instructions.base.Index8Instruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.InstanceOop;

/**
 * astore 指令
 * 将操作数栈顶的引用（InstanceOop）弹出，存入局部变量表的指定索引位置
 * 格式：astore index
 */
public class ASTORE extends Index8Instruction {
    @Override
    public void execute(Frame frame) {
        // 1. 从操作数栈弹出一个引用（我们用 InstanceOop 表示）
        InstanceOop ref = (InstanceOop) frame.getOperandStack().popRef();
        // 2. 存入局部变量表的指定索引
        frame.getLocalVars().setRef(index, ref);
    }
}
